/*
 * Kinetics.h
 *
 *  Created on: 23 Jul 2011
 *      Author: Allan
 */

#ifndef KINETICS_H_
#define KINETICS_H_

// C++ includes
#include <string>
using namespace std;

// GeoReact includes
#include "SpeciesMap.h"

class ReactionKinetics
{
public:
	/// --- Constructor and destructor methods --- ///
	ReactionKinetics() {}
	
	virtual ~ReactionKinetics() {}
	
	/// --- Mutator methods --- ///
	virtual void
	SetIndexes(const SpeciesMap& speciesMap) {};
	
	/// --- Kinetic rate methods --- ///
	virtual const double
	MassRate(double T, double P, const VectorXd& n, const VectorXd& a) const = 0;
};

class ZeroKinetics : public ReactionKinetics
{
public:
	/// --- Virtual methods from class Kinetics --- ///
	virtual const double
	MassRate(double T, double P, const VectorXd& n, const VectorXd& a) const { return 0.0; };
};

#endif /* KINETICS_H_ */
